package com.zerdoor.dao;

import java.util.List;
import java.util.Map;

/**
 * Created by zhongjieyu on 2014/11/14.
 * 艺术家个人主页 持久层接口（包括主页、作品专辑、作品集、作品信息）
 */
public interface IArtistPersonalHomeDao {

    /***********************主页start**********************************/

    /**
     * 根据艺术家ID查询艺术家基本数据
     * @param userId 艺术家ID
     * @return
     * @throws Exception
     */
    Map<String,Object> findArtistBasicDataByUserId(int userId) throws Exception;

    /**
     * 根据任务类型表数据ID集查询服务范围
     * @param ids
     * @return
     * @throws Exception
     */
    List<String> findTaskTypeByIds(String ids) throws Exception;

    /**
     * 根据艺术家ID查询艺术家本月收入和成交笔数
     * @param receiver 艺术家ID
     * @return
     * @throws Exception
     */
    Map<String,String> findSuccessTotalPriceByReceiver(int receiver)  throws Exception;


    /**
     * 根据艺术家ID查询艺术家进行中的收入和成交笔数
     * @param receiver 艺术家ID
     * @return
     * @throws Exception
     */
    Map<String,String> findInTotalPriceByReceiver(int receiver)  throws Exception;

    /**
     * 根据被评价方ID查询评价百分比数据(好评、中评、差评)
     * @param byAppraiser 被评价方ID
     * @return
     * @throws Exception
     */
    Map<String,String> findAppraiseByAppraiser(int byAppraiser) throws Exception;

    /**
     * 根据艺术家ID查询已完成作品
     * @param receiver 艺术家ID
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findFinishProductionByReceiver(int receiver) throws Exception;

    /**
     * 根据艺术家ID查询出售中作品
     * @param receiver
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findSalesProductionByReceiver(int receiver) throws Exception;

    /**
     * 根据艺术家ID、开始日期、结束日期查询评价详细数据
     * @param param 参数中包括艺术家ID receiver 和 开始日期startTime 结束日期endTime
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findAppraiseInfoByReceiver(Map<String,String> param) throws Exception;

    /**
     * 根据艺术家ID、开始日期、结束日期统计好评、中评、差评
     * @param param 参数中包括艺术家ID receiver 和 开始日期startTime 结束日期endTime
     * @return
     * @throws Exception
     */
    Map<String,String> findCountAppraiseByReceiver(Map<String,String> param) throws Exception;


    /**
     * 根据艺术家ID查询进行中的项目信息
     * @param receiver 艺术家ID
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findInTaskInfoByReceiver(int receiver) throws Exception;

    /***********************主页end**********************************/
    /**
     * 根据艺术家ID查询作品专辑结果集
     * @param userId 艺术家ID
     * @return
     * @throws Exception
     */
    List<Map<String,Object>> findUserPhotoByUserId(int userId) throws Exception;

    /**
     * 根据艺术家ID查询作品专辑结果集
     * @param photoId 作品集ID
     * @return
     * @throws Exception
     */
    List<Map<String,String>> findUserWorksByPhotoId(int photoId) throws Exception;

    /**
     * 根据作品ID查询作品下的作品集
     * @param param 作品专辑ID等
     * @return
     * @throws Exception
     */
    List<Map<String,String>> selectAllUserProductionByPhotoId(Map<String,String> param) throws Exception;


    /**
     * 根据作品ID查询作品数据信息
     * @param productionId
     * @return
     * @throws Exception
     */
    Map<String,Object> findUserProductionByProductionId(int productionId) throws Exception;


    /**
     * 根据用户ID和作品ID查询作品订单表中是否存在，如果存在则返回订单ID
     * @param param
     * @return
     * @throws Exception
     */
    String findOrderWorksByUserId(Map<String,Integer> param) throws Exception;


    /**
     * 根据作品ID查询作品价格等信息，如果该作品状态不为可出售则返回空
     * @param worksId 作品ID
     * @return
     * @throws Exception
     */
    String findWorksPriceByWorksId(String worksId) throws Exception;

//    /**
//     * 根据用户ID和订单总金额查询余额是否足够,账户是否冻结
//     * @param param
//     * @return
//     * @throws Exception
//     */
//    Map<String,String> findUserWalletByUserId(Map<String,String> param) throws Exception;


//    /**
//     * 根据用户ID更新用户账户余额
//     * @param param
//     * @throws Exception
//     */
//    void updateUserWalletByUserId(Map<String,String> param) throws Exception;

    /**
     * 根据作品ID更新作品销售数量
     * @param worksId
     * @throws Exception
     */
    void updateWorksSaleNumByWorksId(String worksId) throws Exception;


//    /**
//     * 插入用户钱包记录
//     * @param param
//     * @throws Exception
//     */
//    void addUser_wallet(Map<String,String> param) throws Exception;

    /**
     * 根据用户ID查询用户所对应的委托方ID
     * @param userId
     * @return
     * @throws Exception
     */
    String findUserBaileByUserId(int userId) throws Exception;

    /**
     * 插入作品订单表数据
     * @param param
     * @throws Exception
     */
    void addOrderWorks(Map<String,String> param) throws Exception;


    /**
     * 根据作品ID查询，该作品所属艺术家ID和该艺术家对应的用户ID
     * @param worksId
     * @return
     * @throws Exception
     */
    Map<String,String> findArtistIdByWorksId(String worksId) throws Exception;

//    /**
//     * 查询作品手续费比例
//      * @return
//     * @throws Exception
//     */
//    int findWorkFee() throws Exception;

    /**
     * 根据作品id查询导航信息
     * @param worksId
     * @return
     * @throws Exception
     */
    Map findNavigationByWorksId(int worksId) throws Exception;

    /**
     * 根据艺术家id查询导航信息
     * @param artistId
     * @return
     * @throws Exception
     */
    Map findNavigationByArtistId(int artistId) throws Exception;

    /**
     * 根据作品相册id查询导航信息
     * @param photoId
     * @return
     * @throws Exception
     */
    Map findNavigationByPhotoId(int photoId) throws Exception;

    /**
     * 根据作品ID增加作品点击量
     * @param productionId
     * @throws Exception
     */
    void updateClickRateById(int productionId) throws Exception;

    /**
     * 查询ACG合同条例
     * @return
     * @throws Exception
     */
    String findACGProvision() throws Exception;


}
